Volatile memory, such as dynamic random-access memory (DRAM), provides temporary storage space that can be accessed by a computer processor at a reasonable speed. The volatile memory can be used to store instructions and data, which can then be fetched to the computer processor for processing. The computer processor can also store a result of the processing into the volatile memory for subsequent processing. Although DRAM provides reasonable access speed, memory access latency remains a bottleneck to the computer processor, as the processing speed of computer processor, as well as the storage capacity of DRAM, keeps increasing thanks to Moore's Law. Accordingly, contemporary computer processors typically deploy a hierarchical memory system including a cache, to speed up memory access.